package com.lanou3g.code0410;

/**
 * Created by dllo on 18/4/10.
 */

/*
* 继承:面向对象的三大基本特征之一,表示一个类在另一个类的基础上进行开发
*
* 关键字:extends(有 继承/扩展的含义)
*
* 语法:class A extends B{} 表示A这个类是在B这个类的基础上开发的,那么A这个类就会有B中所有的属性和方法,注意是所有的,
*     这时候 A叫做B的子类,B叫做A的父类(或B叫做A的超类super)
*
* */


public class Cat extends Animal {

    public void sellMoe(){
        System.out.println("在卖萌");

    }

    @Override   // 只是注解，小提示 没有实际意义
    /*
    *
    * @Override 是来表明某个方法是覆写其父类的方法，当在一个方法前加 @Override之后，idea就会自动监测这个方法，再其父类中是否存在，
    * 如果存在，则构成覆写，如果不存在，就会划红线来提示你，这个方法要么方法名写错了，要么 参数列表写错了
    * @Override 并不是覆写的必要条件，只是用来标记的
    *
    * */
    public void eat() {
       // super.eat();
        System.out.println("woshimao");
    }

    public void shout(){  // 覆写
        System.out.println("喵");
    }

    public void animalShout(){
        super.shout();  //调用本类的父类
    }
    public void fun(){
        System.out.println("hjehe");

       this.shout();  // 喵喵   ／／ this 本类对象／调用该方法的对象
        /*
        * super ： 1.指的是父类对象
        *          当在调用一个方法的时候：java首先会在当前类中寻找该方法 ＝》 如果找不到，则在父类中寻找
        *
        *          如果我们想指定调用父类中的方法，则需要写super关键字
        *
        * */
        super.shout(); //叫
    }




//    public int shout(){   //覆写或重写父类的方法，默认返回值一样
//        return 1;
//    }
//


    public void shout(String a){  //重载
        System.out.println("喵");
    }


}
